<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=
    , initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 闭包 
        // 函数内的函数 

        // 1. 需要一个不被销毁的函数执行空间
        // 2. 直接或者间接的返回了一个函数
        // 3 .内部函数使用外的私有变量 
    
        function outer(){
            let a = 100 
            function inner(){
                return a
            }
            return inner
        }

        // outer()  -> inner
        // outer()() -> inner() -> 50

        // outer()()

        const res = outer();
        console.log(res());


        // outer 就是 res的 闭包 


        // 函数链式调用 

        // a().b().c().d() 
        // 对象.属性 对象的特权 
        // 函数+() 执行 
        const a = ()=>{
            const b = ()=>{
                const c = ()=>{
                    const d = ()=>{
                        console.log('d');
                    }
                    console.log('c');
                    return {d}
                }
                
                console.log('b');
                return {c}
            }
            console.log('a');
            return {b}
        }

        a().b().c().d()
    </script>
</body>
</html>